iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 9
1

go 的介面

在前一篇文章介紹給大家如何在 go 語言內寫方法,有了方法就可以把相同的邏輯抽成共用的方法,讓同一件事情可以重複呼叫共同的方法來處理,但是如果要更進一步的說道程式設計不能不提到物件導向,前面也有大致上說明 go 的物件導向,所以這一篇要開始跟大家說明 go 的介面。

本文同步放置於此

go 介面包含的內容

在介紹怎麼在 go 語言使用介面之前當然要跟大家說明一下甚麼是介面,所謂的介面interface就是定義一個動作,但是不去管該動作裡面如何實作。所以舉一個常常在物件導向中會用到的例子,動物這個類別有一個介面叫做走路,而狗繼承動物這類別,所以狗也要實作走路這個介面,而他實作的方式是用四隻腳走路。另外一方面人也是繼承動物這類別,所以也要實作走路這個介面,而他實作的方式就是兩隻腳走路,所以我們就用這例子來看看在 go 怎麼使用。

go 介面的宣告

就如同上面的例子,接下來我們要開始說明如何宣告介面,這邊請大家先看一下下列例子

type Animal interface {
	Walk()
}

這邊說明一下,這就是宣告 go 的介面的方法,這裡需告說Animal這個介面有一個方法需要實作,而這個方法就是Walk,接下來說明一下如何實作介面。

go 介面方法的實作

在前一個段落告訴大家如何宣告一個介面,接下來我們要告訴大家如何實作用兩隻腳走路或用四隻腳走路,請大家先看一下以下的例子

type Dog int

func (d Dog) Walk() {
	fmt.Println("Walk with four feets")
}

type Human int

func (h Human) Walk() {
	fmt.Println("Walk with two feets")
}

上面例子先簡單寫一下,這裡有一個類別是狗,他去實作一個走的介面,還有另外一個類別是人類也去實作一個走的介面,這裡簡單寫一下就是印出兩隻腳走路或是四隻腳走路。寫到這邊還沒有說明要如何使用這介面,這就在下一個段落跟大家說明。

go 介面的使用

前兩個例子分別告訴大家如何宣告一個介面,也告訴大家如何實作兩個類別的介面,接下來重頭戲就是要跟大家說如何使用這介面了,大家請看一下下列例子

package main

import "fmt"

type Animal interface {
	Walk()
}

func main() {
	var a Animal
	d := Dog(1)
	h := Human(1)

	a = d  // a Dog implements Animal
	a.Walk()
	a = h // a Human implements Animal
	a.Walk()
}

type Dog int

func (d Dog) Walk() {
	fmt.Println("Walk with four feet")
}

type Human int

func (h Human) Walk() {
	fmt.Println("Walk with two feet")
}

上面是一個完整的例子,首先宣告一個動物的走的介面,然後實作人類的走路跟狗的走路,最後是宣告一個動物的變數,然後宣告一個狗的變數跟人類的變數,最後分別呼叫身為狗的走路這個介面跟身為人類的走路介面,結果可以看到印出來用四隻腳走路跟用兩隻腳走路的文字。

結論

上面說明了如何在 go 語言中宣告並實作介面,但是上面的例子有很多讀者可能滿腦子一問這是甚麼東西,這些例如type這個類別的關鍵字下一篇內容會為大家更進一步介紹。


上一篇
方法的宣告及使用
下一篇
類別的宣告及使用
系列文
Iris這個在go語言上地表最快的網頁框架30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言